/*
 * ConnexionServeurIHM.java
 * Fenetre de connexion au serveur
 * Created on 12 janvier 2008, 14:13
 */

package Risk.IHM;

import javax.swing.JFrame;
import Risk.Reseau.TraitementClient;
import java.io.IOException;
import javax.swing.JOptionPane;

/**
 *
 * @author  Sebastien Depoix
 */
public class ConnexionServeurIHM extends JFrame{
    private static final long serialVersionUID = 1L;
    private TraitementClient tc;
    private static ConnexionServeurIHM csi;
    
    //TRAITEMENT 
    //faire la gestion d'erreur pour savoir si l'utilisateur a bien choisit 
    //une hote et un port (on ne sait pas la hote et le port du sma) mais
    //(peu importe ce que l'utilisateur a choisit) il faut qu'on clique sur connexion
    //que si les deux champs sont remplis
    
    //TRAITEMENT fait Nicoleta
    //pour tester si l'utilisateur s'est connecte
    public static boolean CONNECTE = false;
    
    /** Creates new form ConnexionServeurIHM */
    public ConnexionServeurIHM() {
        csi = this;
        initComponents();
        setLocation(50, 50);
    }

    public TraitementClient getTc() {
        return tc;
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLHote = new javax.swing.JLabel();
        jtfHote = new javax.swing.JTextField();
        jLnumeroPort = new javax.swing.JLabel();
        jtfNumeroPort = new javax.swing.JTextField();
        jBConnexion = new javax.swing.JButton();
        jBfinConnexion = new javax.swing.JButton();

        setTitle("Connexion au Serveur");
        setResizable(false);
        getContentPane().setLayout(new java.awt.GridLayout(6, 1));

        jLHote.setText("Adresse IP ou Nom d'Hote");
        getContentPane().add(jLHote);
        getContentPane().add(jtfHote);

        jLnumeroPort.setText("Numero de port");
        getContentPane().add(jLnumeroPort);
        getContentPane().add(jtfNumeroPort);

        jBConnexion.setText("Connexion");
        jBConnexion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBConnexionActionPerformed(evt);
            }
        });
        getContentPane().add(jBConnexion);

        jBfinConnexion.setText("Fermer Connexion");
        jBfinConnexion.setEnabled(false);
        jBfinConnexion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBfinConnexionActionPerformed(evt);
            }
        });
        getContentPane().add(jBfinConnexion);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * Lors du clic sur le bouton Connexion, recupere les valeurs presentes
     * dans les textfields et les transmet au constructeur de traitementclient
     * afin de lancer la connexion
     * @param evt
     */
    private void jBConnexionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBConnexionActionPerformed
        if(!CONNECTE){
            try{
                String hote = jtfHote.getText();
                //Test si hote a ete renseigne
                if(hote.equals("") || hote == null){
                    JOptionPane.showMessageDialog(this, "Veuillez entrer une adresse ip", "Attention", JOptionPane.WARNING_MESSAGE);
                }
                int port = Integer.parseInt(jtfNumeroPort.getText());
                tc = new TraitementClient(hote, port);
                CONNECTE = true;
            }
            catch (IOException e){//Se declenche si la connexion ne s'effectue pas
                JOptionPane.showMessageDialog(this, "Probleme de connexion", "Erreur", JOptionPane.ERROR_MESSAGE);
            }
            catch (NumberFormatException e){//Se declenche si le numero de port n'est pas correctement formate
                JOptionPane.showMessageDialog(this, "Veuillez entrer un numero de port correct", "Attention", JOptionPane.WARNING_MESSAGE);
            }
            if(CONNECTE){
                JOptionPane.showMessageDialog(this, "Connexion Reussie", "Message", JOptionPane.INFORMATION_MESSAGE);
                jBfinConnexion.setEnabled(true);
                jBConnexion.setEnabled(false);
            }
        }
    }//GEN-LAST:event_jBConnexionActionPerformed

    private void jBfinConnexionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBfinConnexionActionPerformed
        if(CONNECTE){
            try{
                tc.fermerConnexion();
                CONNECTE = false;
            }
            catch (IOException e){//Se declenche si probleme de deconnexion
                JOptionPane.showMessageDialog(this, "Probleme de deconnexion", "Erreur", JOptionPane.ERROR_MESSAGE);
            }
            if(!CONNECTE){
                jBfinConnexion.setEnabled(false);
                jBConnexion.setEnabled(true);
            }
        }
    }//GEN-LAST:event_jBfinConnexionActionPerformed
    
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jBConnexion;
    private javax.swing.JButton jBfinConnexion;
    private javax.swing.JLabel jLHote;
    private javax.swing.JLabel jLnumeroPort;
    private javax.swing.JTextField jtfHote;
    private javax.swing.JTextField jtfNumeroPort;
    // End of variables declaration//GEN-END:variables
    
}
